static inline float core_lookup (float val, void *userdata)
{
- return linear_to_gamma_2_2 (val);
+ return babl_linear_to_gamma_2_2f (val);
}
static float
static inline float core_rlookup (float val, void *userdata)
{
- return gamma_2_2_to_linear (val);
+ return babl_gamma_2_2_to_linearf (val);
}
static float
while (n--)
{
float alpha = fsrc[3];
- *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
- *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
- *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
- *fdst++ = *fsrc++;
+ if (alpha == 1.0)
+ {
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++);
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++);
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++);
+ *fdst++ = *fsrc++;
+ }
+ else if (alpha == 0.0)
+ {
+ *fdst++ = 0.0;
+ *fdst++ = 0.0;
+ *fdst++ = 0.0;
+ *fdst++ = 0.0;
+ fsrc+=4;
+ }
+ else
+ {
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
+ *fdst++ = linear_to_gamma_2_2_lut (*fsrc++) * alpha;
+ *fdst++ = alpha;
+ fsrc++;
+ }
}
return samples;
}
float f;
float a;
- fast_pow = babl_lookup_new (core_lookup, NULL, 0.0, 1.0, 0.0001);
- fast_rpow = babl_lookup_new (core_rlookup, NULL, 0.0, 1.0, 0.0001);
+ fast_pow = babl_lookup_new (core_lookup, NULL, 0.0, 1.0, 0.00005);
+ fast_rpow = babl_lookup_new (core_rlookup, NULL, 0.0, 1.0, 0.00005);
- for (f = 0.0; f < 1.0; f+= 0.000012)
+ for (f = 0.0; f < 1.0; f+= 0.0000001)
{
a = linear_to_gamma_2_2_lut (f);
a = gamma_2_2_to_linear_lut (f);
while (n--)
{
float alpha = fsrc[3];
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++) * alpha;
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++) * alpha;
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++) * alpha;
*fdst++ = *fsrc++;
}
return samples;
}
else if (alpha >= 1.0)
{
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
*fdst++ = *fsrc++;
}
else
{
float alpha_recip = 1.0 / alpha;
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha;
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha;
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++ * alpha_recip) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++ * alpha_recip) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++ * alpha_recip) * alpha;
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++ * alpha_recip) * alpha;
*fdst++ = *fsrc++;
}
}
while (n--)
{
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
*fdst++ = *fsrc++;
}
return samples;
while (n--)
{
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
- *fdst++ = babl_linear_to_gamma_2_2 (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
+ *fdst++ = babl_linear_to_gamma_2_2f (*fsrc++);
}
return samples;
}
while (n--)
{
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
*fdst++ = *fsrc++;
}
return samples;
while (n--)
{
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
- *fdst++ = babl_gamma_2_2_to_linear (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
+ *fdst++ = babl_gamma_2_2_to_linearf (*fsrc++);
}
return samples;
}